The powerful functionality and low cost of small, relatively powerful microprocessors and microcontrollers have resulted in their expansion into a variety of new uses. Where formerly microprocessors were used mainly for relatively complex tasks, their low cost now allows them to substitute at lower cost for simple or special purpose circuits formed of several discrete components. At the same time, their power allows them to handle additional functions in a particular application that discrete component circuits cannot.
One situation where this is particularly true is in distributed control or process management. Imagine a system where there are a large number of different functions that are performed at various locations throughout the system, and which functions must be coordinated with each other. Some of these functions are requests or initiations of actions, perhaps by a human, perhaps by another node in response to a detected condition. Others are the actions themselves.
The modern auto is a pertinent example. There are literally scores of different electrical functions that are initiated at various places throughout an automobile. A few of these functions are locking and unlocking doors, handling engine functions such as ignition and fuel injection, sensing and displaying status such as speed and oil pressure, indicating burned out lights and improperly closed doors, sensing accelerator and throttle position, etc. The conventional approach dedicates one or more conductors to each of these functions. For example, a wire directly connects a door lock with the switch that opens that lock, a wire connects the oil pressure gauge with the oil pressure sensor, a wire connects the door covering the fuel cap to the switch that opens it, and wires run from the ignition control to each of the ignition components. A moment's consideration shows that an automobile using such conventional connections of these related functions requires perhaps hundreds of dedicated wires.
This conventional structure has a number of disadvantages particularly in automated or semi-automated assembly. In the first place, failed or defective dedicated wires are expensive to correct. How can one easily run a replacement wire from the dashboard to the trunk? The large number of wires makes miswiring easy during manufacture not least because color-coding a large number of individual wires is complicated and expensive. The sheer number of wires connecting components located throughout the automobile becomes expensive to provide and install. The large number of wires occupies a significant volume within the auto. As the number of wires in an auto increases, the wires become increasingly vulnerable to damage or failure for a variety of reasons, leading to less reliability. Other systems both more complicated and less complicated than autos, have similar problems with handling the proliferation of functional elements and the wires between these various functional elements.
One solution to many of these problems makes use of the previously mentioned microprocessors. Instead of dedicated wires between related components, a single serial signal or data path often comprising a single pair of signal wires, and a single power wire pair are connected to all or at least a group of the system components. Each component includes a communicator or node that can send messages to and receive messages from the other components' nodes on the signal path. Each node receives every message on the signal wires and uses the messages appropriate for operating its component.
A problem recognized for a very long time is that of message collisions, where two or more nodes send messages on the signal wires at the same time. One solution is that of the CAN (controller area network) system. In the CAN system, messages are encoded in binary signals that are either dominant or recessive bits. If a node sends a dominant bit signal, the dominant bit is present on the signal path regardless of the number of recessive bits sent by other nodes. Each node senses the signal on the signal path, and ceases sending its message if, when sending a recessive bit, the node senses a dominant bit. This process of each node detecting collisions in real time and ceasing message sending upon detecting a collision is called arbitration. The CAN system is explained in more detail in U.S. Pat. Nos. 5,001,642 and 5,303,348.
Typically, each type of message has a unique leading ID portion. This assures that eventually only one message survives arbitration. The node sending the surviving message continues sending until the message is completed, at which time all of the nodes wait for a short period of time, and then as many as have messages to send, start sending new messages.
One problem with the CAN system is assuring that every node has an opportunity to complete its messages. CAN systems are designed to operate with cheap components and often in potentially noisy environments. It is possible to still have reliable communication under these conditions by using relatively slow bit rates, often on the order of a few hundred bits per second (bps). If the system also requires extensive real time data exchange, the data path may become fully occupied by messages having ID portions with dominant bits early in the message, and other messages will be delayed excessively. Accordingly, it is useful to reduce the number of messages in order to free the data path for as many messages as possible.
In some systems using the CAN system to communicate among the components, there are a number of components that are designed to provide a similar message at similar times. For example, if the system is a temperature control system for a relatively large occupied space, the system may have the space divided into zones, with a temperature sensor in each zone. Each of the temperature sensors will of course have its own node for communicating with the heating or air conditioning (HVAC) unit of the system. Typically, the highest or lowest temperature is used to determine whether the HVAC unit should operate. In typical larger installations, dampers or valves control flow from the HVAC unit of heated or cooled air or water to the various zones.
Since there may be a large number of zones, it can take some time for all of the nodes to report their zones' temperatures. When temperature is reported frequently, just the temperature reporting may comprise a substantial portion of the total message capacity on the data path. Furthermore, there is an advantage to learn immediately which of the zones is reporting to highest or lowest temperature. Since there is no way to predict which of the zones is coolest or warmest, this information is not available until each of the zones has reported. Furthermore, if this one piece of information is dependent on accurate transmission of a large number of messages, collisions and errors during transmission may delay final calculation of the extreme temperature value. From this analysis one can conclude that it is desirable to allow two or more nodes to simultaneously transmit. However, the CAN protocol is not designed to allow two messages to simultaneously transmit.